/*
 * @lc app=leetcode.cn id=387 lang=javascript
 *
 * [387] 字符串中的第一个唯一字符
 */

// @lc code=start
/**
 * @param {string} s
 * @return {number}
 */
var firstUniqChar = function (s) {
  const queue = [];
  const obj = {};

  for(let i = 0; i < s.length; i++) {
    const ch = s[i];
    if (obj[ch] == null) {
      obj[ch] = i;
      queue.push([ch, i]);
    } else {
      obj[ch] = -1;
      while (queue.length && obj[queue[0][0]] === -1) {
        // 当队首元素在obj对象中存在重复项则出队
        // 直到队列为空，或者队首元素无重复项
        // 【延迟删除】
        queue.shift();
      }
    }
  }
  console.log('obj', obj, ' queue ', queue);

  return queue.length ? queue[0][1] : -1;
};
// @lc code=end
